#ifndef SPATIAL_FILTER_H
#define SPATIAL_FILTER_H

#include <iostream>
#include "filter.h"
#include "histogram.h"
#include "mask.h"

class SpatialFilter : public Filter{
	public:
		SpatialFilter();
		SpatialFilter(Data *);
		~SpatialFilter();

        void grayScaleFilter();
        void negativeFilter();
        void logFilter(double);
        void powerFilter(double, double);
        void thresholdingFilter(int);

        int *equalizeHistogram(Histogram *);
        void histogramEqualization(Data * = NULL);
        void histogramEqualizationFilter();
        void histogramMatchingFilter(Histogram);
        Data *localHistogramProcessingFilter(Mask *);
        Data *localHistogramProcessingWithStatisticsFilter(Mask *, double, double, double, double);
        Data *correlation(Mask *, Data * = NULL);
        Data *convolution(Mask *, Data * = NULL);
        Data *orderStaticFilter(Mask *, int); //mediana max e min
        Data *unsharpMaskingAndHighboostFilter(Mask *);
        Data *robertFilter();
        Data *sobelFilter();
};

#endif
